\chapter{Tests unitaires de Kerneos}
\label{chap:test.unit.kerneos}
\minitoc

\section{Outils de tests unitaires pour Flex}

Les tests unitaires de Flex se feront avec le plugin FlexUnit d'Eclipse. Ce plugin valide des assertions sur le code qu'il ex\'ecute. L'avantage est qu'il s'int\`egre au cycle de vie des applications g\'er\'ees par Maven.

FlexUnit est un cadre pour les applications Flex, les applications ActionScript3.0 et les biblioth\`eques. Elle imite la fonctionnalit\'e de JUnit.
FlexUnit contient les fonctionnalit\'es suivantes:
\begin{itemize}
\item Le cadre pour le code 3 ActionScript test d'unit\'e dans les projets Flex et ActionScript3 et les libraires du projet;
\item Interface graphique de test pour ex\'ecuter des tests unitaires.\end{itemize}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Rappel sur l'architecture de Kerneos}
Kerneos est bas\'e sur une architecture en MVC pour les applications web. Voici un r\'esum\'e des composantes MVC de Kerneos.

		
\begin{itemize}
\item Model - Java + Actionscript
\item View - Flex
\item Controller - Granite
\end{itemize}


Remarque: Pour la suite du document, View = pr\'esentation.

Les sections suivantes d\'efinissent les objets sur lesquels les tests unitaires seront effectu\'es.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Le module api en Flex}

\subsection{M\'ethode - addModule(module:Object, name:String, status:Boolean ,description:String):void}

\subsubsection{Test1: }
But : Tester le cas o\`u l'instance pass\'e en param\`etre est incorrecte.

Etat : 
Le param\`etre instance contient Nothing.

\subsubsection{Test2: }
But : Tester le cas o\`u l'instance est correcte mais aucun module ne correspond au nom de module pass\'e en param\`etre.

Etat :
Le param\`etre name est une cha\^ine de caract\`ere.
Le param\`etre instance contient une instance valide, cette instance ne contient pas le name de d\'efinition correspondant au param\`etre module.

\subsubsection{Test3: }
But : Tester le cas o\`u la d\'efinition du service est corrompue.

Etat : 
Le param\`etre module est un objet.
Le param\`etre instance contient une instance invalide.

\subsubsection{Test4: }
But : Tester le cas o\`u la d\'efinition du service est corrompue.

Etat : 
Le param\`etre name est une cha\^ine de caract\`ere.
Le param\`etre instance contient une instance valide, cette instance ne contient pas le name de d\'efinition correspondant au param\`etre module.

\subsubsection{Test5: }
But : Tester le cas o\`u la d\'efinition du service est corrompue.

Etat : 
Le param\`etre status est une instance boolean.
Le param\`etre instance contient une instance invalide.

\subsubsection{Test6: }
But : Tester le cas o\`u la construction se d\'eroule bien.

Etat : 
Le param\`etre serviceId est une cha\^ine de caract\`ere.
Le param\`etre instance contient une instance valide, cette instance contient l'Id de d\'efinition correspondant au param\`etre serviceId, bien form\'e.


%-------------------------------------%


\subsection{M\'ethode - addIFrame(url:String, name:String, status:Boolean ,description:String):void}
\subsubsection{Test1: }
But : Tester le cas o\`u l'instance pass\'e en param\`etre est incorrecte.

Etat : 
Le param\`etre instance contient Nothing.

\subsubsection{Test2: }
But : Tester le cas o\`u l'instance est correcte mais aucun frame ne correspond au nom de frame pass\'e en param\`etre.

Etat : 
Le param\`etre name est une cha\^ine de caract\`ere.
Le param\`etre instance contient une instance valide, cette instance ne contient pas le nom de d\'efinition correspondant au param\`etre name.

\subsubsection{Test3: }
But : Tester le cas o\`u la d\'efinition du service est corrompue.

Etat : 
Le param\`etre name est une cha\^ine de caract\`ere.
Le param\`etre instance contient une instance valide, cette instance ne contient pas le nom de d\'efinition correspondant au param\`etre name.

\subsubsection{Test4: }
But : Tester le cas o\`u la d\'efinition du service est corrompue.

Etat : 
Le param\`etre url est une cha\^ine de caract\`ere.
Le param\`etre instance contient une instance valide, cette instance ne contient pas l'url de d\'efinition correspondant au param\`etre url.

\subsubsection{Test5: }
But : Tester le cas o\`u la d\'efinition du service est corrompue.

Etat : 
Le param\`etre status est une instance boolean.
Le param\`etre instance contient une instance invalide.

\subsubsection{Test6: }
But : Tester le cas o\`u la construction se d\'eroule bien.

Etat : 
Les param\`etres url, name sont des cha\^ine de caract\`ere.
Le param\`etre instance contient une instance valide, cette instance contient les cha\^ines de caract\`ere de d\'efinition correspondant aux param\`etres.

%-------------------------------------%
\subsection{M\'ethode - setService(serviceId:String, destination:String):void}

\subsubsection{Test1: }
But : Tester le cas o\`u l'instance pass\'e en param\`etre est incorrecte.

Etat : 
Le param\`etre instance contient Nothing.

\subsubsection{Test2: }
But : Tester le cas o\`u l'instance est correcte mais aucun service ne correspond \`a l'Id de service pass\'e en param\`etre.

Etat : 
Le param\`etre serviceId est une cha\^ine de caract\`ere.
Le param\`etre instance contient une instance valide, cette instance ne contient pas l'Id de d\'efinition correspondant au param\`etre destination.

\subsubsection{Test3: }
But : Tester le cas o\`u la d\'efinition du service est corrompue.

Etat : 
Le param\`etre destination est une cha\^ine de caract\`ere.
Le param\`etre instance contient une instance valide, cette instance contient le destination de d\'efinition correspondant au param\`etre destination.

\subsubsection{Test4: }
But : Tester le cas o\`u la construction se d\'eroule bien

Etat : 
Le param\`etre serviceId est une cha\^ine de caract\`ere.
Le param\`etre instance contient une instance valide, cette instance contient l'Id de d\'efinition correspondant au param\`etre serviceId, bien form\'e.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Le module client}
Ce module ne contenant que des d\'eclarations d'objet, il n'est pas possible de le tester individuellement.
\subsection{M\'ethode - moduleSearch():void}
\subsubsection{Test1 :}
But : Test lorsque il y a le module.

Etat du test : 
L'attribut RemoteObject du Module est un module trouv\'e par JNDI.
La m\'ethode addResponder() ajoute un \'ecouteur.

\subsubsection{Test2 :}
But : Test lorsque il n'y a pas le module.

Etat du test :
L'attribut RemoteObject du Module est un module trouv\'e par JNDI.
La m\'ethode addResponder() ajoute un \'ecouteur.

\subsubsection{Test3 :}
But : Test lorsque la d\'efinition du module est corrompue.

Etat du test :
L'attribut RemoteObject du Module est un module trouv\'e par JNDI.
La m\'ethode addResponder() ajoute un \'ecouteur.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Le module server}
\subsection{Validation de la classe Module}
Cette classe ne contenant que la d\'eclaration d'objet, il n'est pas possible de la tester individuellement.

\subsection{Validation de la classe Service}
Cette classe ne contenant que la d\'eclaration d'objet, il n'est pas possible de la tester individuellement.

\subsection{Validation de la classe ModuleService}
\begin{enumerate}
\item Cr\'eation une instance de ModuleService par le programme de test.
\item Application de la m\'ethode loadModules.
\item Comparaison de l'instance de type List<Module> avec le r\'esultat attendu.
\end{enumerate}


%end Test_unit_kerneos.tex